<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
	"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>
	<title>AddOn Studio for World of Warcraft Tutorial</title>
	<meta http-equiv=content-type content="text/html; charset=windows-1252" />
	<link rel="StyleSheet" href="Styles.css" type="text/css" />
</head>

<body>

<map name=MAP95390579>
<area shape=rect
		coords="720, 71, 914, 403"
		href="#Solution">

<area shape=rect
		coords="720, 404, 912, 654"
		href="#Properties">

<area shape=rect
		coords="-3, 72, 147, 652"
		href="#Toolbox">

<area shape=rect
		coords="149, 72, 717, 640"
		href="#Game">

<area shape=rect
		coords="1, 1, 912, 69"
		href="#MenusToolbars">
</map>

<p class=Title>AddOn Studio for World of Warcraft Tutorial</p>

<h1>Overview</h1>

<p>AddOn Studio for World of Warcraft is a sample implementation of an 
 isolated Visual Studio Shell that provides World of Warcraft addon developers 
 a tool to easily build addons.</p>

<h2>Tutorial Topics</h2>

<p><a href="#Introduction">Introduction</a></p>

<p><a href="#AddonInternals">Internals of a World of Warcraft AddOn</a></p>

<p><a href="#TheAddonStudio">AddOn Studio</a></p>

<p><a href="#CreatingAddon">Creating a World of Warcraft AddOn</a></p>

<p><a href="#DeployingAddon">Deploying a World of Warcraft AddOn</a></p>

<p><a href="#TestingAddon">Testing a World of Warcraft AddOn</a></p>

<p><a href="#CreatingAce2Addon">Creating an Ace2 World of Warcraft AddOn</a></p>

<p><a href="#ExtendingVSforWoWShell">Extending AddOn Studio for World of 
 Warcraft</a></p>

<p><a href="#ExtendingVSforWoWShell">Additional Documentation</a></p>

<h1><a name=Introduction></a>Introduction</h1>

<p>AddOn Studio for World of Warcraft leverages Microsoft Visual Studio 
 2008 (VS2008) and enables hobbyist coders and gamers to develop addons 
 for World of Warcraft, produced by Blizzard Entertainment. The addons 
 created with AddOn Studio allow the developer to implement a graphical 
 user interface as well as write code using the Lua programming language, 
 a lightweight scripting language similar to JavaScript.</p>

<h1><a name=AddonInternals></a>Internals of a World of Warcraft addon</h1>

<p>Every World of Warcraft addon consists of a single Table of Contents 
 (TOC) file, as well as Frame XML and Lua files. Frame XML files are ordinary 
 XML files that express the user interface of your addon, whereas Lua 
 files contain arbitrary code that runs when your addon is loaded in World 
 of Warcraft. The TOC file contains the list of files that World of Warcraft 
 should load when loading your addon and additional information, such 
 as the name of the author and the description of the addon. For more 
 detailed information, please refer to the <a href="#AdditionalDocumentation">Additional 
 Documentation</a> section.</p>

<h1><a name=TheAddonStudio></a>AddOn Studio</h1>

<p>AddOn Studio is where you develop the graphical user interface (GUI) 
 and the code to implement the functionality of your addon. In the following 
 illustration, click on the different parts of the development environment 
 to read a brief introduction of them. For more detailed help, please refer 
 to the Microsoft Visual Studio 2008 documentation.</p>

<p><img src="Full Shell for describing it parts.png"
		x-maintain-ratio=TRUE
		usemap=#MAP95390579
		style="border: none;
				float: none;
				width: 913px;
				height: 686px;
				border-style: none;
				border-style: none;"
		width=913
		height=686
		border=0></p>

<h2><a name=Game>F</a>rameXML Visual Designer</h2>

<p>This is the visual representation of the user interface of your addon 
 as it would appear in the game, and also where you place the visual elements 
 of your addon. Select the visual controls from the <a href="#Toolbox">Toolbox</a>. 
 To change the properties of a control in the designer, select it and change 
 its properties in the <a href="#Properties">Property Grid</a>.</p>

<h2><a name=Toolbox></a>Toolbox</h2>

<p>Here you find the visual controls you can use to compose the graphical 
 interface of your addon. Using the mouse, select a control from the toolbox 
 and drag-and-drop it onto the <a href="#Game">Visual Designer</a> surface.</p>

<h2><a name=Solution></a>Solution Explorer</h2>

<p>The projects contained in the currently loaded solution are shown here, 
 along with all their associated files. You will most often use this pane 
 to deploy the addon you've created and change its properties, as well 
 as open the files you want to work with. For more information, please 
 refer to the <a href="#CreatingAddon">Creating a World of Warcraft AddOn</a> 
 and <a href="#DeployingAddon">Deploying a World of Warcraft AddOn</a> 
 sections.</p>

<h2><a name=Properties>P</a>roperty Grid</h2>

<p>Here you can change the properties of the control that is currently 
 selected in the <a href="#Game">FrameXML Designer</a>. You will also use 
 it to view the existing event handler functions of the selected control, 
 and to create new event handler functions. For more information, please 
 refer to the <a href="#CreatingAddon">Creating a World of Warcraft AddOn</a> 
 section.</p>

<h2><a name=CodeEditor></a>Code Editor</h2>

<p>Use the Lua programming language to implement the addon's functionality 
 and logic. For Lua language reference resources, please refer to the <a 
 href="#AdditionalDocumentation">Additional Documentation</a> section.</p>

<p>This code editor supports IntelliSense, which is a form of automated 
 auto-completion used in Microsoft Visual Studio that makes programming 
 language references easy to access while coding. You do not need to leave 
 the Code Editor pane to search on language elements (members, parameters, 
 operators, brace matching, etc.). You can find the information you need, 
 insert language elements into your code, and have IntelliSense complete 
 the typing for you.</p>

<h2><a name=MenusToolbars></a>Menus and Toolbars</h2>

<p>Standard menus and toolbars of Visual Studio 2008. For more detailed 
 help, please refer to the Visual Studio 2008 documentation.</p>

<p>TODO: Explain custom menus and toolbar buttons, if any.</p>

<h1><a name=CreatingAddon></a>Creating a World of Warcraft AddOn</h1>

<p>The following instructions walk you through the steps of creating a 
 simple yet functional World of Warcraft addon. After completing these 
 steps, go to the next section for instructions on <a href="#DeployingAddon">deploying</a> 
 your addon.</p>

<p class=ProcessIntroduction>Follow these steps to create an addon using 
 AddOn Studio:</p>

<ol>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>In the Windows 
 <span style="font-weight: bold;">Start</span> menu, select <span style="font-weight: bold;">Programs</span>, 
 <span style="font-weight: bold;">AddOn Studio for World of Warcraft</span>, 
 and then click on the <span style="font-weight: bold;">AddOn Studio for 
 World of Warcraft</span> shortcut to launch AddOn Studio.</p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>In the <span 
 style="font-weight: bold;">File</span>, menu select <span style="font-weight: bold;">New</span>, 
 and then <span style="font-weight: bold;">Project</span> to create a new 
 World of Warcraft AddOn project. </p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>In the <span 
 style="font-weight: bold;">New Project</span> window that appears, select 
 the &quot;Basic Warcraft Addon&quot; template, enter the name of the new 
 project (e.g. name it &quot;MyFirstAddOn&quot;), and select the location 
 where you want to store all the files associated with this project and 
 the solution created for it.<br>
	<img src="New Project dialog.png"
		style="border: none;
				width: 612px;
				height: 422px;
				border-style: none;
				border-style: none;"
		width=612
		height=422
		border=0></p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>Click <span 
 style="font-weight: bold;">OK</span>. The new project shows the visual 
 designer and the user interface of your addon, where you can add various 
 controls selected from the <a href="#Toolbox">Toolbox</a>. By default, 
 a single frame named Frame1 is shown, which you may resize and move using 
 the mouse, or change any of its properties using the <a href="#Properties">Property 
 Grid</a>.</p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>By default, 
 Frame1's position is stationary on the gamer's screen, so to make the 
 addon movable, click the <img src="Button - Make frame movable.png"
								x-maintain-ratio=TRUE
								style="border: none;
										width: 10px;
										height: 10px;
										float: none;
										border-style: none;
										border-style: none;"
								width=10
								height=10
								border=0> icon and then click on the <span 
 style="font-weight: bold;">Make frame movable</span> option.<br>
	<img src="Make frame movable.png"
		x-maintain-ratio=TRUE
		style="border: none;
				width: 479px;
				height: 168px;
				float: none;
				border-style: none;
				border-style: none;"
		width=479
		height=168
		border=0></p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>Using the mouse, 
 select the FontString control from the <a href="#Toolbox">Toolbox</a> 
 and drag it to Frame1 to create a label.<br>
	<img src="Click and drag FontString to Frame1.png"
		x-maintain-ratio=TRUE
		style="border: none;
				float: none;
				width: 603px;
				height: 359px;
				border-style: none;
				border-style: none;"
		width=603
		height=359
		border=0></p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>To change the 
 text it displays and its other properties, select the FontString1 object 
 and use the <a href="#Properties">Property Grid</a>. For example, change 
 the &quot;text&quot; property to show &quot;Hello world!&quot;.<br>
	<img src="Changing text of FontString1.png"
		x-maintain-ratio=TRUE
		style="border: none;
				width: 693px;
				height: 285px;
				float: none;
				border-style: none;
				border-style: none;"
		width=693
		height=285
		border=0></p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>Now let's add 
 a button below FontString1. First, using the mouse (or the <a href="#Properties">Property 
 Grid</a>), resize Frame1 to allow space for the button.<br>
	<img src="Resize Frame1.png"
		x-maintain-ratio=TRUE
		style="border: none;
				width: 357px;
				height: 167px;
				float: none;
				border-style: none;
				border-style: none;"
		width=357
		height=167
		border=0></p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>Select the 
 Button control from the <a href="#Toolbox">Toolbox</a> and drag it to 
 place it anywhere on Frame1. Using the mouse and/or the <a href="#Properties">Property 
 Grid</a>, resize it, move it, change its background and foreground colors, 
 change its label, or any other properties, as you like.<br>
	<img src="Click and drag Button to Frame1.png"
		x-maintain-ratio=TRUE
		style="border: none;
				float: none;
				width: 866px;
				height: 433px;
				border-style: none;
				border-style: none;"
		width=866
		height=433
		border=0></p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>Now that the 
 user interface of this simple addon is ready, let's add some code to 
 the project. Double-click on an empty area of Frame1 to create the OnLoad 
 event handler function for this frame. The <a href="#CodeEditor">Code 
 Editor</a> appears where the Frame.lua source code file is loaded and 
 is ready to use for adding code for this addon.<br>
	<img src="Code pane with default code for Frame1_OnLoad.png"
		x-maintain-ratio=TRUE
		style="border: none;
				float: none;
				width: 693px;
				height: 277px;
				border-style: none;
				border-style: none;"
		width=693
		height=277
		border=0></p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>In the body 
 of this function, enter the following line of code, which will register 
 for the <span style="font-family: 'Courier New', monospace; font-size: 10pt;">PLAYER_TARGET_CHANGED</span> 
 event that we are interested in. <span style="font-family: 'Courier New', monospace; font-size: 10pt;"><br>
	this.RegisterEvent(&quot;PLAYER_TARGET_CHANGED&quot;);</span> </p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>To handle the 
 <span style="font-family: 'Courier New', monospace; font-size: 10pt;">PLAYER_TARGET_CHANGED</span> 
 event, you will need to define a handler function for the OnEvent event. 
 To do this, return to the visual designer by clicking on the <span style="font-weight: bold;">Frame.xml 
 [Design]</span><span> tab and select the Frame1 object using the mouse.</span><br>
	<img src="In Code pane click tab to return to design view.png"
		x-maintain-ratio=TRUE
		style="border: none;
				width: 693px;
				height: 277px;
				float: none;
				border-style: none;
				border-style: none;"
		width=693
		height=277
		border=0></p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>In the <span 
 style="font-weight: bold;">Property Grid</span>, under the <span style="font-weight: bold;">Events</span><span> 
 category, </span>you can see which events have handler functions defined 
 (highlighted in red in the screenshot below), and here you can also create 
 a new event handler function. To write some code to handle the <span style="font-family: 'Courier New', monospace; font-size: 10pt;">PLAYER_TARGET_CHANGED</span> 
 event we registered for in an earlier step, create a new handler function 
 for the OnEvent event by selecting the event and clicking on the <span 
 style="font-weight: bold;">Create</span><span> button in the drop-down 
 list (see illustration below)</span>.<br>
	<img src="Properties pane - existing function and create function.png"
		x-maintain-ratio=TRUE
		style="border: none;
				width: 609px;
				height: 285px;
				float: none;
				border-style: none;
				border-style: none;"
		width=609
		height=285
		border=0> </p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>The <a href="#CodeEditor">Code 
 Editor</a> pane reappears where you can enter the code that will be executed 
 when an event is triggered.<br>
	<img src="Code pane with default code for Frame1_OnEvent.png"
		x-maintain-ratio=TRUE
		style="border: none;
				width: 693px;
				height: 277px;
				float: none;
				border-style: none;
				border-style: none;"
		width=693
		height=277
		border=0></p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>In the body 
 of the <span style="font-family: 'Courier New', monospace; font-size: 10pt;">Frame1_OnEvent</span> 
 function, enter the following code, which will change the text property 
 of the FontString1 control to a message that includes the name of the 
 current target in World of Warcraft whenever the player changes its target: 
 <span style="font-family: 'Courier New', monospace; font-size: 10pt;"><br>
	if (event == &quot;PLAYER_TARGET_CHANGED&quot;) then<br>
	 FontString1:SetText(&quot;Hello &quot; .. UnitName(&quot;target&quot;) 
 .. &quot;!&quot;);<br>
	end</span></p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>Now, for the 
 Button1 control (i.e. the <span style="font-weight: bold;">Close</span><span> 
 button</span>), let's create an event handler function that hides this 
 addon. Return to the game environment by clicking on the <span style="font-weight: bold;">Frame.xml 
 [Design]</span><span> tab and select the Button1 control using the mouse. 
 In the <a href="#Properties">Property Grid</a>, under the </span><span 
 style="font-weight: bold;">Events</span><span> category, select the OnClick 
 event, and in the drop-down list click on the </span><span style="font-weight: bold;">Create</span><span> 
 button. You can also create this event by double-clicking on the button 
 in the visual designer.</span><br>
	<img src="Properties pane - create function for Button1_OnClick.png"
		x-maintain-ratio=TRUE
		style="border: none;
				width: 269px;
				height: 299px;
				float: none;
				border-style: none;
				border-style: none;"
		width=269
		height=299
		border=0></p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>The <a href="#CodeEditor">Code 
 Editor</a> appears where, in the body of the <span style="font-family: 'Courier New', monospace; font-size: 10pt;">Button1_OnClick</span> 
 function, enter the following code, which will hide the addon (i.e. the 
 Frame1 frame) whenever the <span style="font-weight: bold;">Close</span><span> 
 button is clicked</span>: <span style="font-family: 'Courier New', monospace; font-size: 10pt;"><br>
	Frame1:Hide();</span><span><br>
	<br>
	<img src="Code pane with tutorial code for Button1_OnClick.png"
		x-maintain-ratio=TRUE
		style="border: none;
				width: 693px;
				height: 343px;
				float: none;
				border-style: none;
				border-style: none;"
		width=693
		height=343
		border=0></span></p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>This addon 
 is now ready to perform some simple functionality in World of Warcraft, 
 but before deploying it, let's change the project's properties to something 
 meaningful. In the <a href="#Solution">Solution Explorer</a>, right-click 
 on the name of the project (i.e. <span style="font-weight: bold;">MyFirstAddOn</span><span>) 
 and then click on the </span><span style="font-weight: bold;">Properties</span><span> 
 item in the context menu that appears.</span><br>
	<img src="Solution Explorer pane - Properties item in context menu.png"
		x-maintain-ratio=TRUE
		style="border: none;
				width: 269px;
				height: 462px;
				float: none;
				border-style: none;
				border-style: none;"
		width=269
		height=462
		border=0></p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>The <span style="font-weight: bold;">General</span> 
 properties pane appears where you should enter the details of this addon. 
 The details you enter here are used to generate the table of contents 
 file (a.k.a. the TOC file) so you do not need to modify it directly. Of 
 course, you only need to provide personal details if want to.<br>
	<img src="Project Properties pane.png"
		x-maintain-ratio=TRUE
		style="border: none;
				width: 772px;
				height: 453px;
				float: none;
				border-style: none;
				border-style: none;"
		width=772
		height=453
		border=0></p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>Save the project 
 and all its files by clicking the <img src="Button - Save all.png"
										x-maintain-ratio=TRUE
										style="border: none;
												width: 14px;
												height: 14px;
												float: none;
												border-style: none;
												border-style: none;"
										width=14
										height=14
										border=0> icon on the toolbar.</p></li>
</ol>

<h1><a name=DeployingAddon></a>Deploying a World of Warcraft AddOn</h1>

<p>To deploy an addon using AddOn Studio, open the addon's solution in 
 Visual Studio (if it is not already open), in the <a href="#Solution">Solution 
 Explorer</a> right-click on the project you want to deploy (in this case 
 <span style="font-weight: bold;">MyFirstAddOn</span>), and then click 
 on the <span style="font-weight: bold;">Build </span>item in the context 
 menu that appears. The AddOn Studio will go ahead, generate a TOC (table 
 of contents) file and copy all the necessary files to the correct directory 
 under the &quot;World of Warcraft Installation Path&quot; that is set 
 for the project. For detailed information on creating an addon and setting 
 project properties, please refer to the <a href="#CreatingAddon">Creating 
 a World of Warcraft AddOn</a> section.</p>

<h1><a name=TestingAddon></a>Testing a World of Warcraft AddOn</h1>

<p>To test an addon, <a href="#DeployingAddon">deploy</a> it using AddOn 
 Studio, launch World of Warcraft and log on. You can enable or disable 
 the addon by bringing up the <span style="font-weight: bold;">AddOn List</span> 
 using the <span style="font-weight: bold;">AddOns</span> button in the 
 lower left corner after you have logged in and selecting the checkbox 
 next to it. Alternatively, you may click on the <span style="font-weight: bold;">Enable 
 All</span> button.</p>

<p><img src="WoW AddOn List with MyFirstAddOn.jpg"
		x-maintain-ratio=TRUE
		style="border: none;
				float: none;
				width: 1024px;
				height: 768px;
				border-style: none;
				border-style: none;"
		width=1024
		height=768
		border=0></p>

<p>Notice the information displayed when you move the mouse over the addon. 
 These project details are stored in the table of contents file contained 
 in the addon's project. For more information about changing the project 
 details, please refer to the <a href="#CreatingAddon">Creating a World 
 of Warcraft AddOn</a> section.</p>

<p>Click <span style="font-weight: bold;">Okay</span> and press <span style="font-weight: bold;">Enter 
 World</span> to start playing the game. The addon will automatically 
 show up on the game's interface.</p>

<p><img src="WoW with MyFirstAddon.jpg"
		x-maintain-ratio=TRUE
		style="border: none;
				width: 505px;
				height: 436px;
				float: none;
				border-style: none;
				border-style: none;"
		width=505
		height=436
		border=0></p>

<p>To test the features of the addon created in this tutorial:</p>

<ul>
	
	<li class=kadov-p-CListBullet1><p class=ListBullet1>Click on a new 
 target. The addon should display the message &quot;Hello &lt;name of 
 target&gt;!&quot;</p></li>
	
	<li class=kadov-p-CListBullet1><p class=ListBullet1>Click the <span 
 style="font-weight: bold;">Close</span> button. The addon should disappear 
 from the game interface.</p></li>
</ul>












<h1><a name=CreatingAce2Addon></a>Creating an Ace2 World of Warcraft AddOn</h1>

<p>The following instructions walk you through the steps of creating a 
 simple yet functional World of Warcraft addon based on the popular <a href="http://www.wowace.com">Ace2 framework</a>.  More tutorials can be found <a href="http://www.wowace.com/wiki/Category:Tutorials">here</a>.</p>

<p class=ProcessIntroduction>Follow these steps to create an addon using 
 AddOn Studio:</p>

<ol>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>In the Windows 
 <span style="font-weight: bold;">Start</span> menu, select <span style="font-weight: bold;">Programs</span>, 
 <span style="font-weight: bold;">AddOn Studio for World of Warcraft</span>, 
 and then click on the <span style="font-weight: bold;">AddOn Studio for 
 World of Warcraft</span> shortcut to launch AddOn Studio.</p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>In the <span 
 style="font-weight: bold;">File</span>, menu select <span style="font-weight: bold;">New</span>, 
 and then <span style="font-weight: bold;">Project</span> to create a new Ace2 based
 World of Warcraft AddOn project. </p></li>

	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>In the <span 
 style="font-weight: bold;">New Project</span> window that appears, select 
 the &quot;WowAce Warcraft Addon&quot; template, enter the name of the new 
 project (e.g. name it &quot;HelloAce&quot;), and select the location 
 where you want to store all the files associated with this project and 
 the solution created for it.<br>
	<img src="Ace_1.png" /></p></li>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>Click <span 
 style="font-weight: bold;">OK</span>. The new project shows the code editor with the skeleton of an Ace2 addon.</p></li>
<p><img src="Ace_2.png" /></p>
	
	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>We can use the OnInitialize method of the class to initialize our addon, subscribe to events, etc. The OnEnabled and the 
		OnDisabled methods are called by the Ace framework when the addon gets enabled/disabled. This sample addon will display the name of the current Zone the player is in, so we need to respond
		to the zone changing events in order to update our UI. There are two events we are interested in: <a href="http://www.wowwiki.com/Events/Z">ZONE_CHANGED</a> and <a href="http://www.wowwiki.com/Events/Z">ZONE_CHANGED_NEW_AREA</a>.
		
		<p>Event handling is very straightforward. We need to call the RegisterEvent method to indicate we want to be notified when the event fires and we need to declare a method in our addon with the same name as the event.</p>
		<p><img src="ace_events.png" /></p>
		<p>Everything else is handled by Ace.</p>
		

	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>We need a Frame to display the current zone name, so let's add a Frame to our project. Bring up the context menu in the Solution Explorer and choose Add/New Item...</p>
		<p><img src="ace_additem.png" /></p>
<p>Select the Frame in the Add New Item dialog box.</p>
<p><img src="ace_newframe.png" /></p>

<li class=kadov-p-CListNumbered1><p class=ListNumbered1>Drop two FontString instances to the Frame from the Toolbox and arrange them. The first one will display a static text ("Welcome to"),
	while the second one will show the zone name. Change the Name property of the second FontString to "$parentLocationLabel". $parent is substituted by WoW and it is always the name of the parent object. In our case the real name of the FontString will be MainFrameLocationLabel.</p>
	<p><img src="ace_frame_layout.png" /></p>

	<li class=kadov-p-CListNumbered1><p class=ListNumbered1>Change to the Code View of the MainFrame. (Open MainFrame.lua in the Solution Explorer.) Add the following code to the Lua file. This will be a simple helper function which lets us to change the LocationLabel's text from the AddOn.</p>
		
		<p><img src="ace_mainframelua.png" /></p>

		<li class=kadov-p-CListNumbered1><p class=ListNumbered1>Deploy the addon into World of Warcraft then launch the game. You'll see a new Frame which always displays your current location:</p>

			<p><img src="ace_ingame.png" /></p>

</body>

</html>
